Before the advent of high speed communications networks and complex graphic displays, the demands on microprocessor time in most general purpose computers were not great. Data input speeds were orders of magnitude less than current data input speeds. Further, during communications, the data was displayed in text mode, as graphic displays were not utilized by the computer programs that received and displayed data.
In the prior art, the computer program controlling the receipt of data would capture a character of data and immediately process and display the character. The next data character could then be received and displayed. Thus, the display was updated one character at a time. This worked fine when data was received at 300-1200 bits/second and the characters were put on the screen by a display device operating in a text mode.
However, as data input speeds increased, individually processing and displaying each character was slowing the speed at which a microprocessor could handle incoming data. Most data communications programs subsequently developed began buffering incoming characters and updating the display only after a full line of characters was received. The display would then be updated one line of data at a time. By buffering characters and updating the display less often, the available microprocessor time devoted to receiving and storing data was increased.
Alas, updating the display as each line of data is received is becoming impractical in today's high speed communications environments. Data input rates frequently range from 9600 to 25000 bits/second. Further, the increasing presence of fiber optic communications networks, and the associated increases in bandwidth and data transmission speeds, demands that computers be capable of receiving and storing this high speed data and even faster future data input rates. The microprocessor must continually receive and store this data or suffer delays in communications throughput or risk missing character interrupts.
Furthermore, it takes longer to display the received data using today's graphics mode display systems than when a text mode display is utilized. Therefore, current graphic display systems require significantly more microprocessor time than text mode displays. In a graphical interface display system, such as the Windows Operating System's Graphical Interface sold by Microsoft Corporation, all images are displayed and characters drawn in the graphics display mode. Thus, all data received by the computer is displayed using a graphic display system.
In a graphic display system, each data character received by the computer is transferred into the graphical interface software which generates the pixel data needed to display the character. In contrast to text mode displays, where transmitting one byte to a character generator produced the character to be displayed, graphic displays require that a bit be assigned to each pixel on the display and each time the display is updated every pixel on the display must be controlled. Further, color attributes, script and the size of the character must all be controlled to generate a character display. Indeed, drawing just one character frequently requires the graphical interface software to output 50 bytes of data. The microprocessor running the graphical interface software must execute all the software commands and transfer significant quantities of data just to generate one character on the display.
Therefore, the microprocessor must spend a great amount of time controlling the display of data. For example, a scroll command, which generally causes several thousand pixels to scroll upwards to make room at the bottom of the window for the new data, is very time consuming to perform. Scroll commands are common in data communications applications, as data is often received and placed on the bottom line of the display, causing the upper lines on the display to be scrolled. As can be seen, the microprocessor must service two time intensive tasks: (1) receiving and storing data, and (2) displaying the received data.
The only function served by drawing data on the display during data communications is to inform the user that data is being received in the computer. Indeed, all data received during data communication could be stored and displayed after the communication ended, thereby increasing the microprocessor time devoted to receiving data and maximizing throughput. However, the user may become confused because data would not be appearing on the screen during communications. As is known to those skilled in the art, the display of a computer should change when users believe an operation is occurring or else users believe nothing is happening in the computer. Thus, some microprocessor time must be devoted to updating the display, even though this updating process does not advance the ultimate goal of data capture.
Unfortunately, during data communications, drawing on the display may account for 50-70% of the microprocessor time, causing the microprocessor to fall behind in receiving and storing data input. This either causes a reduction in the speed of communications or else lost data.
In the past, as the data rates increased, the designers of computer programs simply buffered increasingly large data sets and updated the display less frequently and with more data. Recently, in response to today's high speed data input and the use of graphics displays, it has been suggested that one solution to avoiding overburdening the microprocessor is to buffer several lines or even pages of data input. The computer programs might buffer several lines of characters, and then perform all the display operations at one time on the buffered data. Thus, the display would be updated less frequently, but the data would still ultimately be displayed.
However, even this limited buffering of data to be displayed does not alleviate the problem of allocating sufficient microprocessor time to receiving and storing data. If data is arriving slowly, the buffer fills slowly and it takes too long to fill the buffer and update the display. Additionally, as data input speeds become ever greater, such a solution would either fail or would simply display a page of data followed by a long pause and then another page of data. Experience shows that users want more frequent updates, and thus a need exists for a system that provides updates of the display in a consistent and visibly frequent manner, yet which adjusts the number of display updates depending on data input speed.